home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / ibus / setup / enginecombobox.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2009-11-11  |  3KB  |  97 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import gtk
  5. import gobject
  6. import ibus
  7. import gettext
  8. from icon import load_icon
  9.  
  10. _ = lambda a: gettext.dgettext('ibus', a)
  11.  
  12. class EngineComboBox(gtk.ComboBox):
  13.     
  14.     def __init__(self, engines):
  15.         super(EngineComboBox, self).__init__()
  16.         self._EngineComboBox__model = gtk.TreeStore(gobject.TYPE_PYOBJECT)
  17.         iter1 = self._EngineComboBox__model.append(None)
  18.         self._EngineComboBox__model.set(iter1, 0, 0)
  19.         lang = { }
  20.         for e in engines:
  21.             l = ibus.get_language_name(e.language)
  22.             if l not in lang:
  23.                 lang[l] = []
  24.             
  25.             lang[l].append(e)
  26.         
  27.         keys = lang.keys()
  28.         keys.sort()
  29.         if ibus.get_language_name('Other') in keys:
  30.             keys.remove(ibus.get_language_name('Other'))
  31.             keys += [
  32.                 ibus.get_language_name('Other')]
  33.         
  34.         for l in keys:
  35.             iter1 = self._EngineComboBox__model.append(None)
  36.             self._EngineComboBox__model.set(iter1, 0, l)
  37.             for e in lang[l]:
  38.                 iter2 = self._EngineComboBox__model.append(iter1)
  39.                 self._EngineComboBox__model.set(iter2, 0, e)
  40.             
  41.         
  42.         self.set_model(self._EngineComboBox__model)
  43.         renderer = gtk.CellRendererPixbuf()
  44.         renderer.set_property('xalign', 0)
  45.         self.pack_start(renderer, False)
  46.         self.set_cell_data_func(renderer, self._EngineComboBox__icon_cell_data_cb)
  47.         renderer = gtk.CellRendererText()
  48.         renderer.set_property('xalign', 0)
  49.         self.pack_start(renderer, True)
  50.         self.set_cell_data_func(renderer, self._EngineComboBox__name_cell_data_cb)
  51.         self.set_active(0)
  52.  
  53.     
  54.     def __icon_cell_data_cb(self, celllayout, renderer, model, iter):
  55.         engine = self._EngineComboBox__model.get_value(iter, 0)
  56.         icon_size = gtk.icon_size_lookup(gtk.ICON_SIZE_LARGE_TOOLBAR)[0]
  57.         if isinstance(engine, str) or isinstance(engine, unicode):
  58.             renderer.set_property('visible', False)
  59.             renderer.set_property('sensitive', False)
  60.         elif isinstance(engine, int):
  61.             renderer.set_property('visible', False)
  62.             renderer.set_property('sensitive', False)
  63.         else:
  64.             renderer.set_property('visible', True)
  65.             renderer.set_property('sensitive', True)
  66.             pixbuf = load_icon(engine.icon, gtk.ICON_SIZE_LARGE_TOOLBAR)
  67.             if pixbuf == None:
  68.                 pixbuf = load_icon('engine-default', gtk.ICON_SIZE_LARGE_TOOLBAR)
  69.             
  70.             if pixbuf == None:
  71.                 pixbuf = load_icon('gtk-missing-image', gtk.ICON_SIZE_LARGE_TOOLBAR)
  72.             
  73.             renderer.set_property('pixbuf', pixbuf)
  74.  
  75.     
  76.     def __name_cell_data_cb(self, celllayout, renderer, model, iter):
  77.         engine = self._EngineComboBox__model.get_value(iter, 0)
  78.         if isinstance(engine, str) or isinstance(engine, unicode):
  79.             renderer.set_property('sensitive', False)
  80.             renderer.set_property('text', engine)
  81.         elif isinstance(engine, int):
  82.             renderer.set_property('sensitive', True)
  83.             renderer.set_property('text', _('Select an input method'))
  84.         else:
  85.             renderer.set_property('sensitive', True)
  86.             renderer.set_property('text', engine.longname)
  87.  
  88.     
  89.     def get_active_engine(self):
  90.         i = self.get_active()
  91.         iter = self.get_active_iter()
  92.         if i == 0 or i == -1:
  93.             return None
  94.         return self.get_model()[iter][0]
  95.  
  96.  
  97.